10061. Tree Минимальный элемент
Задано бинарное дерево
поиска. Верните указатель на его минимальный элемент.
Определение дерева:
//Java
class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) {
val = x;
left = null;
right = null;
}
}
// C++
class TreeNode
{
public:
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
Реализуйте функцию Minimum которая возвращает указатель на вершину с наименьшим элементом в дереве.
// Java
TreeNode Minimum(TreeNode tree)
// C++
TreeNode* Minimum(TreeNode *tree)
Пример
Функция Minimum возвращает res – указатель
на вершину с
наименьшим элементом в дереве.
дерево
Если tree = NULL, то возвращаем NULL.
Для поиска вершины с
наименьшим значением следует стартовать с корня и двигаться по указателям всегда
в левое поддерево до тех пор, пока левый указатель текущей вершины не станет
равным NULL.
Реализация алгоритма
TreeNode *Minimum(TreeNode *tree)
{
Если tree = NULL, то возвращаем NULL.
if (tree == NULL) return tree;
Двигаемся в левое поддерево пока левый сын вершины не
станет равным NULL.
while (tree->left != NULL) tree = tree->left;
Возвращаем указатель на минимальный элемент.
return tree;
}
Реализация алгоритма – рекурсия
TreeNode
*Minimum(TreeNode *tree)
{
if (tree->left == NULL) return tree;
return Minimum(tree->left);
}
Java реализация
TreeNode Minimum(TreeNode tree)
{
if (tree == null) return tree;
while (tree.left != null) tree = tree.left;
return tree;
}
Java реализация – рекурсия
TreeNode Minimum(TreeNode tree)
{
if (tree.left == null) return tree;
return Minimum(tree.left);
}